# -*- coding: utf-8 -*-
import KBEngine
import IKernel
from KBEDebug import *

from interfaces.InteractiveObject import InteractiveObject

# 这个文件是 proxy实体 专门用来发送引擎层到脚本层的实体回调函数
class ProxyEntityEvent(InteractiveObject):
	def __init__(self):
		InteractiveObject.__init__(self)

	def onClientEnabled(self):
		"""
		KBEngine method.
		该entity被正式激活为可使用， 此时entity已经建立了client对应实体， 可以在此创建它的
		cell部分。
		"""
		INFO_MSG("account[%i] entities enable. entityCall:%s" % (self.id, self.client))
		IKernel.Instance().onEvent(self.getScriptName(), "onClientEnabled", self.id, self.id, [])

	def onLogOnAttempt(self, ip, port, password):
		"""
		KBEngine method.
		客户端登陆失败时会回调到这里
		"""
		INFO_MSG(ip, port, password)
		IKernel.Instance().onEvent(self.getScriptName(), "onLogOnAttempt", self.id, self.id, [ip, port, password])
		return KBEngine.LOG_ON_ACCEPT

	def onClientDeath(self):
		"""
		KBEngine method.
		客户端对应实体已经销毁
		"""
		DEBUG_MSG("Account[%i].onClientDeath:" % self.id)
		if self.cell != None:
			self.destroyCellEntity()
			return

		self.destroy()
		IKernel.Instance().onEvent(self.getScriptName(), "onClientDeath", self.id, self.id, [])

	def onLoseCell(self):
		IKernel.Instance().onEvent(self.getScriptName(), "onLoseCell", self.id, self.id, [])

		self.onClientDeath()






























































